#include <iostream>
using namespace std;
int dx[]={-1,1,0,0};
int dy[]={0,0,-1,1};
int r,c;
const int N=110;
int a[N][N]; 
int f[N][N];
int dfs(int x,int y)
{
	if(f[x][y])return f[x][y];
	int len=1;
	for(int k=0;k<4;k++)
	{
		int i=x+dx[k];
		int j=y+dy[k];
		if(i<1||i>r||j<1||j>c)continue;
		if(a[x][y]<=a[i][j])continue;
		len=max(dfs(i,j)+1,len);
	}
	return f[x][y]=len;
}
int main()
{
   	cin>>r>>c;
   	for(int i=1;i<=r;i++)
   	{
   		for(int j=1;j<=c;j++)
   		{
   			cin>>a[i][j];
			}
		}
		int ret=1;
		for(int i=1;i<=r;i++)
		{
			for(int j=1;j<=c;j++)
			{
				ret=max(dfs(i,j),ret);
			}
		}
		cout<<ret;
	return 0;
}
